#ifndef CJSONARRAY_H
#define CJSONARRAY_H

#include "cjsonvaluestring.h"
#include "cjsonvaluenumber.h"
#include "cjsonvaluebool.h"
#include "cjsonvaluenull.h"
#include "cjsonobject.h"

#include <vector>

class CJsonObject;

class CJsonArray : public CJsonValue
{
private:
  std::vector <CJsonValue*> members;
public:
	LIB_PRE CJsonArray();
	LIB_PRE CJsonArray(const CJsonArray * value);
	LIB_PRE ~CJsonArray();
	LIB_PRE jstring ToString() const;
	LIB_PRE void AddMember(const jchar * member);
	LIB_PRE void AddMember(jstring member);
	LIB_PRE void AddMember(jint member);
	LIB_PRE void AddMember(bool member);
	LIB_PRE void AddMember(const CJsonValueString * member);
	LIB_PRE void AddMember(const CJsonValueNumber *member);
	LIB_PRE void AddMember(const CJsonValueBool *member);
	LIB_PRE void AddMember(const CJsonValueNull *member);
	LIB_PRE void AddMember(const CJsonObject *member);
	LIB_PRE void AddMember(const CJsonArray *member);
	LIB_PRE void AddMember(const CJsonValue *member);
  LIB_PRE bool Empty() const;
  LIB_PRE void GetValue(std::vector <CJsonValue*> & value) const;
	LIB_PRE std::size_t Size() const;
	LIB_PRE const CJsonValue * operator [] (unsigned index) const;
};

#endif // CJSONARRAY_H

